package com.doitedu.core

import com.doitedu.utils.SparkUtil
import org.apache.spark.rdd.RDD

/**
 * @Date: 22.6.29 
 * @Author: HANGGE
 * @qq: 598196583
 * @Tips: 学大数据 ,到多易教育
 * @Description:
 * map  转换算子  返回新的RDD
 *
 */
object C10_Transformations_Operator_ScoreDemo {
  def main(args: Array[String]): Unit = {
    val sc = SparkUtil
      .getSparkContext("map算子")
    val rdd1 = sc.textFile("data/stu/")
    rdd1.map(line => {
      // 切割
      val arr = line.split(",")
      // 组装
      (arr(0).toInt, arr(1), arr(2), arr(3).toDouble)
    }).groupBy(_._3) // 科目分组
      .map(tp => {
        (tp._1, tp._2.map(tp => tp._4).sum / tp._2.size)
      }).foreach(println)
    sc.stop()
  }

  private def StuTotalScore(rdd1: RDD[String]): Unit = {
    // 处理每行数据  , 将每行数据转换成 元组
    val rdd2 = rdd1.map(line => {
      // 切割
      val arr = line.split(",")
      // 组装
      (arr(0).toInt, arr(1), arr(2), arr(3).toDouble)
    })
    // 按照学生的ID 分组
    val grouped: RDD[(String, Iterable[(Int, String, String, Double)])] = rdd2.groupBy(_._2)
    val rdd3: RDD[(String, Double)] = grouped.map(tp => {
      (tp._1, tp._2.map(_._4).sum)
    })
    rdd3.foreach(println)
  }
}
